一.方法引用
  a.方法概述
		/**
		 * 方法引用概述:
		 *  当我们使用已有类中的方法作为Lambda表达式对应的接口中的抽象方法实现
		 *  我们可以用方法引用来简化Lambda表达式
		 */
  b.方法引用格式
	方法引用使用的前提:(适用于1,2)
	  引用的方法和Lambda表达式对应接口中的抽象方法的形参类型保持一致
   	1.成员方法引用
	  a.引用非静态成员方法
		/**
		 *
		 * 非静态成员引用格式
		 *   对象名::方法名
		 *
		 */
	  b.引用静态成员方法
		/**
		 * 静态方法引用
		 *   类名::静态方法名
		 *   Arrays,Collections
		 *   Arrays类中
		 *   static String toString(int[] a)
		 *           返回指定数组内容的字符串表示形式。
		 *   Collections类:
		 *  public static <T extends Comparable<? super T>> void sort(List<T> list)
		 *            根据元素的自然顺序 对指定列表按升序进行排序。
		 */
	2.构造方法引用
		/**
		 * 构造方法引用格式:
		 *   类名::new
		 *
		 */
	3.数组对象引用
		数组对象引用格式
		   类型[]::new
    4.特殊的非静态方法引用
		/**
		 * 特殊的非静态方法的引用
		 *  格式:
		 *    类名::非静态方法名
		 *    ***1.不再适用于方法引用的前提条件
		 *    2.当Lambda表达式的第一个参数,作为实例(非静态)方法的调用者,第二个参数作为实例方法的参数,可以使用类名::非静态方法名
		 *    3.当Lambda表达式的参数作为一个空参实例方法的调用者时候,也可以使用类名::非静态方法名
		 */
二.Stream流
  1.Stream流概述
    Stream流的出现为了增强集合和数组的操作,Stream流更专注于数据的转换,过滤,获取等一系列操作
    同时Stream流提高了操作集合和数组的效率,简化代码
  2.Stream流操作步骤
    1.根据数据源获取一个Stream对象
		/**
		 * 集合或数组流对象的获取
		 *   集合:
		 *     Collection体系:都是通过stream()方法来获取一个流对象
		 *        List
		 *        Set
		 *     Map体系:需要转换到Collection体系的集合,调用stream()方法获取流对象
		 *       HashMap
		 *    数组:
		 *      static <T> Stream<T> of(T... values)
		 *             返回一个元素为指定值的顺序排列的流。
		 */
	2.通过Stream对象可以进行0次或多次中间操作
		/**
		 * 中间操作:
		 *   过滤操作
		 *     filter:传入Predicate,根据Predicate中的条件对流中元素做筛选,满足条件保留,不满足剔除
		 *   排序操作:
		 *     sorted:可以根据指定的规则,将流中的元素从小到大排序
		 *   去重操作
		 *     distinct:去除流中重复的元素
		 *   截取操作
		 *     limit:根据传入的值,来决定截取流总元素的个数
		 *     skip:根据传入的值,决定跳过流中的元素个数
		 *   映射操作
		 *     map:将一种数据根据指定操作映射成另外一种数据
		 *       mapToInt
		 *       mapToDouble
		 *       mapToLong
		 *       /
    3.进行一次最终操作,获取最终结果
		/**
		 * Stream流的最终操作:
		 *   1.迭代
		 *     forEach:逐个消费流中的元素
		 *   2.统计
		 *     count:统计流中元素的个数
		 *     max:按照一定比较规则(Comparator接口实现的规则),来获取流中最大元素
		 *     min:按照一定比较规则(Comparator接口实现的规则),来获取流中最小元素
		 *   3.查找
		 *     findFirst
		 *   4.匹配
		 *     allMatch:只有流中所有的元素都满足传入Predicate(条件),allMatch方法才返回true,否则返回false
		 *     anyMatch:只要有一个元素满足传入Predicate(条件),anyMatch方法返回true,否则返回false
		 *     noneMatch:只有流中所有的元素都不满足传入Predicate(条件),noneMath方法才返回true,否则返回false
		 *   5.收集
		 *     collect:我们可以将最终操作结果收集到一个集合(List,Set,Map)中
		 *             我们主要通过Collectors.toList(),Collectors.toSet(),Collectors.toMap,将最终操作结果收集到不同集合中
		 * 中间操作:
		 *   sorted:按照一定比较规则(Comparator接口实现的规则),从小到大排序
		 */